Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 34b3987ded73f18ab2cd0aab2f687d6107ce2a4a


Parents : 22a7acf
Author : Mark Qvist <mark@unsigned.io>
Date : 2023-08-14T18:02:39+02:00

Added error handling to micron parser mouse event translator. Fixes #32.

Changes

1 files changed, 33 insertions(+), 29 deletions(-)


Diff

diff --git a/nomadnet/ui/textui/MicronParser.py b/nomadnet/ui/textui/MicronParser.py
index f549509..3885a15 100644
--- a/nomadnet/ui/textui/MicronParser.py
+++ b/nomadnet/ui/textui/MicronParser.py
@@ -751,41 +751,45 @@ class LinkableText(urwid.Text):
return x, y
def mouse_event(self, size, event, button, x, y, focus):
- if button != 1 or not is_mouse_press(event):
- return False
- else:
- (maxcol,) = size
- translation = self.get_line_translation(maxcol)
- line_offset = 0
+ try:
+ if button != 1 or not is_mouse_press(event):
+ return False
+ else:
+ (maxcol,) = size
+ translation = self.get_line_translation(maxcol)
+ line_offset = 0
- if self.align == "center":
- line_offset = translation[y][1][1]-translation[y][0][0]
- if x < translation[y][0][0]:
- x = translation[y][0][0]
+ if self.align == "center":
+ line_offset = translation[y][1][1]-translation[y][0][0]
+ if x < translation[y][0][0]:
+ x = translation[y][0][0]
- if x > translation[y][1][0]+translation[y][0][0]:
- x = translation[y][1][0]+translation[y][0][0]
+ if x > translation[y][1][0]+translation[y][0][0]:
+ x = translation[y][1][0]+translation[y][0][0]
- elif self.align == "right":
- line_offset = translation[y][1][1]-translation[y][0][0]
- if x < translation[y][0][0]:
- x = translation[y][0][0]
+ elif self.align == "right":
+ line_offset = translation[y][1][1]-translation[y][0][0]
+ if x < translation[y][0][0]:
+ x = translation[y][0][0]
- else:
- line_offset = translation[y][0][1]
- if x > translation[y][0][0]:
- x = translation[y][0][0]
+ else:
+ line_offset = translation[y][0][1]
+ if x > translation[y][0][0]:
+ x = translation[y][0][0]
- pos = line_offset+x
+ pos = line_offset+x
- self._cursor_position = pos
- item = self.find_item_at_pos(self._cursor_position)
+ self._cursor_position = pos
+ item = self.find_item_at_pos(self._cursor_position)
- if item != None:
- if isinstance(item, LinkSpec):
- self.handle_link(item.link_target, item.link_fields)
+ if item != None:
+ if isinstance(item, LinkSpec):
+ self.handle_link(item.link_target, item.link_fields)
- self._invalidate()
- self._emit("change")
+ self._invalidate()
+ self._emit("change")
+
+ return True
- return True
\ No newline at end of file
+ except Exception as e:
+ return False
\ No newline at end of file


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────